home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Day Cry
/
Day Cry CD.bin
/
oh_towns
/
taropyon
/
splib
/
splib.lzh
/
PRG
/
ZNSPLAY
/
MAIN.C
< prev
next >
Wrap
C/C++ Source or Header
|
1994-09-19
|
10KB
|
396 lines
/*************************************************************************
* "ZNSPLAY"
*************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <time.h>
#ifdef __HIGHC__
# include <heap.cf>
#endif
#include <egb.h>
#include <mos.h>
#include <snd.h>
#include <xld.h>
#include <sidework.h>
#include <loader.h>
#include "znsplay.h"
#include "../DLL/BGM/midi.h"
#include <setint.h>
#include <doscons.h>
#include <spgetopt.h>
#include <fdl.h>
#include <FDL/fdlcol.h>
#include <dta.h>
#include <dtaname.h>
extern int SideWorkMenu(void);
int FlagQuickRet = FALSE;
static CONST char RECODENAME_MAINARG[] = DTA_RECODENAME_MAINARG;
static CONST char RECODENAME_STARTPATH[] = DTA_RECODENAME_STARTPATH;
DTACTRL_T *DtaCtrl = NULL;
static PLT_RGB PltDat[16] =
{
/* G R B */
{ 0, 0, 0}, /* C_BALCK */
{ 0, 0, 0}, /* C_BLUE or C_THROUGH */
{ 7, 7, 8}, /* C_RED */
{12,12,13}, /* C_MAGENTA */
{ 6, 5, 7}, /* C_GREEN */
{ 8, 7, 9}, /* C_CYAN */
{10, 9,11}, /* C_YELLOW */
{11,11,12}, /* C_WHITE */
{ 5, 5, 6}, /* C_HBALCK */
{ 0, 0,11}, /* C_HBLUE */
{ 0,11, 0}, /* C_HRED */
{ 0,11,11}, /* C_HMAGENTA */
{11, 0, 0}, /* C_HGEEN */
{11, 0,11}, /* C_HCYAN */
{11,11, 0}, /* C_HYELLOW */
{14,14,15} /* C_HWHITE */
};
POINT DisplayStartPara[4] =
{
{0,0}, /* ëµû╩é╠ò\ĪèJÄnêΩé╠É▌ÆΦ */
{0,0}, /* ë╝æzëµû╩Æåé╠ê┌ô« */
{2,2}, /* ëµû╩é╠ègæσ */
{320,240}, /* ò\Īëµû╩é╠æσé½é│ */
};
void page1_palette(void)
{
DSP_writePage(1);
DSP_setPlt(PltDat);
}
void ZNS_displayStart( int mode, int x, int y )
{
DisplayStartPara[mode].x = x;
DisplayStartPara[mode].y = y;
EGB_displayStart(EgbPtr, mode, DisplayStartPara[mode].x,
DisplayStartPara[mode].y );
}
#if 0
void reinit(void)
{
int page;
{
int i;
page = 0;
for ( i = 0; i < 4; ++i )
{
EGB_displayStart(EgbPtr, i, DisplayStartPara[i].x,
DisplayStartPara[i].y );
}
}
{
page = 1;
EGB_writePage(EgbPtr, page );
EGB_displayStart(EgbPtr, 1, DspCtrl.scinf[page].dspstart.x,
DspCtrl.scinf[page].dspstart.y );
EGB_displayStart(EgbPtr, 3, DspCtrl.scinf[page].sc.x2+1,
DspCtrl.scinf[page].sc.y2+1 );
}
MOS_setControl(0x7F);
MOS_resolution(0,DspCtrl.page0);
MOS_resolution(1,DspCtrl.page1);
MOS_writePage(MosInf.page);
MOS_curType( 81 );
MosInf.move = DspCtrl.scinf[MosInf.page].sc;
MOS_moveArea( MosInf.move.x1, MosInf.move.y1,
MosInf.move.x2, MosInf.move.y2 );
page1_palette();
}
#endif
/*************************************************************************
* âVâXâeâÇÅëè·ë╗
*************************************************************************/
static int init( int *argc, char **argv[], int _argc, char **_argv )
{
#ifdef __HIGHC__
/* âüâéâèĵô╛ùpÉ▌ÆΦ */
Init_allocated_storage = 0;
#endif
*argc = _argc;
*argv = _argv;
if ( DTA_isAtPcl() )
{
/* ÄqâvâìâZâXïNô« */
DTARECODE_T *recode_arg = NULL, *recode_startpath = NULL;
char *args = "ZNSPLAY";
char *startpath = NULL;
if ( (DtaCtrl = DTA_openCheck()) != NULL )
{
if ( (recode_arg = DTA_openRecode( DtaCtrl, RECODENAME_MAINARG)) != NULL )
{ /* âpâëâüü[â^é╠ÄwÆΦéáéΦ */
args = recode_arg->ptr;
}
if ( (recode_startpath = DTA_openRecode( DtaCtrl, RECODENAME_STARTPATH)) != NULL )
{ /* âpâëâüü[â^é╠ÄwÆΦéáéΦ */
startpath = recode_startpath->ptr;
}
}
if ( (*argc = FS_argSet( args, argv )) < 1 )
return (ERR);
if ( startpath )
*argv[0] = startpath;
}
set_ctrl_c();
set24h();
if ( SndPtr == NULL )
{
if ( (SndPtr = calloc(16384,1)) == NULL )
{
reset24h();
return (ERR);
}
SND_init( SndPtr );
}
{
DSP_sysInit(NULL);
EGB_displayPage(EgbPtr,0,0);
EGB_resolution(EgbPtr,0,ZNS_RESOLUSION); /* ëµû╩âéü[âhÉ▌ÆΦ */
EGB_displayStart(EgbPtr,2,2,2);
EGB_displayStart(EgbPtr,3,320,240);
EGB_displayPage(EgbPtr,1,3);
DspCtrl.page0 = ZNS_RESOLUSION;
DspCtrl.scinf[0].md = ZNS_RESOLUSION;
DspCtrl.scinf[0].fr.x1 = 0;
DspCtrl.scinf[0].fr.y1 = 0;
DspCtrl.scinf[0].fr.x2 = 511;
DspCtrl.scinf[0].fr.y2 = 255;
DspCtrl.scinf[0].sc.x1 = 0;
DspCtrl.scinf[0].sc.y1 = 0;
DspCtrl.scinf[0].sc.x2 = 319;
DspCtrl.scinf[0].sc.y2 = 239;
DspCtrl.scinf[0].view.x1 = 0;
DspCtrl.scinf[0].view.y1 = 0;
DspCtrl.scinf[0].view.x2 = 319;
DspCtrl.scinf[0].view.y2 = 239;
DspCtrl.scinf[0].dlgArea.x1 = 2;
DspCtrl.scinf[0].dlgArea.y1 = 14;
DspCtrl.scinf[0].dlgArea.x2 = 319-2;
DspCtrl.scinf[0].dlgArea.y2 = 239-10;
MosInf.scrollPage = 0xFF; /* âXâNâìü[âïé╚é╡ */
}
DSP_set_defFnt( FNTYPE_USR1 );
GetFnt12Ptr(0); /* ank font 12 Åëè·É▌ÆΦ */
KBF_sysInit(); /* âLü[â{ü[âhâVâXâeâÇÅëè·ë╗ */
KBF_kan_off(); /* é⌐é╚è┐ÄÜò╧è╖ï╓Ä~ */
FDL_sysInit(); /* âtâ@âCâïâ_âCâAâìâO */
sdk_control(0); /* âTâCâhâÅü[âNïNô«ï╓Ä~ */
/* DLL âVâXâeâÇÅëè·ë╗ */
_XLD_init(NULL);
_XLD_setMemFunc( malloc, free );
{
char tmp[256];
int len;
FS_setStartPath( tmp, *argv[0] );
if ( (len = strlen(tmp)) > 0 )
tmp[--len] = '\0';
_XLD_setLinkPath( tmp );
}
_XLD_lockLib( MID_playStatFlag );
/* MIDI BGM âVâXâeâÇÅëè·ë╗ */
MID_sysInit();
/* âpâîâbâgÉ▌ÆΦ */
DSP_writePage(1);
DSP_setPlt(PltDat);
/* â^âCâgâïò\Ī */
DSP_writePage(1);
DSP_title( _ZNSPLAY_, MAIN_VER, C_HWHITE, C_WHITE, C_MBLACK, C_HBLACK );
/* âtâ@âCâïâ_âCâAâìâO */
FdlDefColTbl[0] = C_DLGBASE;
Fdl_set_doscall( DOScons_open, DOScons_close, system);
Fdl_set_sidework( SideWorkMenu );
FdlSetWildCardList( ZNS_WILD_ALL );
FdlSetWildCardList( ZNS_WILD_MOV );
/* FdlSetWildCardList( ZNS_WILD_V00 ); */
FdlSetWildCardList( ZNS_WILD_V02 );
return (NORMAL);
}
static void term(void)
{
EGB_writePage(EgbPtr,0);
EGB_color(EgbPtr,1,0);
EGB_clearScreen(EgbPtr);
DSP_writePage(1);
HVboxf(DspCtrl.scinf[1].sc.x1, DspCtrl.scinf[1].sc.y1+DspTitYs,
DspCtrl.scinf[1].sc.x2, DspCtrl.scinf[1].sc.y2-16,0);
MID_sysEnd();
FDL_sysEnd();
KBF_sysEnd();
DSP_sysEnd();
if ( SndPtr )
{
SND_end();
free(SndPtr);
SndPtr = NULL;
}
reset24h();
}
static void help(void)
{
static CONST char help_msg[] = "\
usage : znsplay [<option>] [<filename>] \n\
<option> \n\
-wait <n> ... wait time (n:0ü`99) \n\
-display <n> ... display mode (n:1ü`4) \n\
-disk ... disk play mode \n\
-memory ... memory play mode \n\
-chkPort <right/left/both> \n\
... pause & stop check port \
";
DSP_writePage(1);
DLG_tmpMsgBox ( DLGPOS_CENTER_OF_SCN, DLGPOS_CENTER_OF_SCN,
DspCtrl.black, C_DLGBASE, COLMIX(C_INFO,C_GRAY),
"ügUGOKUZANSUüh movie data player %s ver.%s\n\n%s",
_ZNSPLAY_, MAIN_VER, help_msg );
}
static int errFunc( CONST char *s )
{
/* return (-1) æªÆåÆf */
/* return (1) âGâëü[é═û│Äïé╡é─ÆåÆf */
/* return (0) âGâëü[é═û│Äï */
return (0);
}
/*************************************************************************
* âIâvâVâçâôâpâëâüü[â^é╠ë≡É═ü^É▌ÆΦ
*************************************************************************/
static int set_option( int argc, char **argv )
{
int ret = NORMAL;
static int helpVar = 0;
static GOP_DIGIT_T waitPar = { 0, 0, 99 };
static GOP_DIGIT_T displayPar = { 1, 1, 4 };
static int memoryVar = 0;
static int diskVar = 0;
extern int ZnsSwPort;
static GOP_SELECT_OBJ_T ZnsSwPortObj[3] =
{
{1,"left" },
{2,"right"},
{3,"both" },
};
static GOP_SELECT_T ZnsSwPortPar = {3, ZnsSwPortObj};
static GOPKEY_T GetoptKey[] =
{
{ GOP_TYP_FLAG , "?" , GO